package com.lagou.module5_5;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

/**
 * @Author wsl
 * @Date 2021/8/10 21:04
 * @Project_Name javase
 */
public class FunctionDemo {

    public static void main(String[] args) {

        //1.使用lambda表达式分别将以下功能封装到Function对象中
        //(a) 求Integer类型ArrayList中所有元素的平均数
        Function<ArrayList<Integer>,Integer> fal1 = list -> {
            Integer sum = 0;
            for (Integer i: list){
                sum += i;
            }
            return sum/list.size();
        };
        //(b)将Map<String,Integer>中value存到ArrayList`<Integer>`中
        Function<Map<String,Integer>,ArrayList<Integer>> fal2 = map -> {
            Collection<Integer> values = map.values();
            ArrayList<Integer> list = new ArrayList<>();
            list.addAll(values);
            return list;
        };

        //2.以学生姓名为key成绩为value创建集合并存储数据
        Map<String,Integer> map = new HashMap<>();
        map.put("岑小村", 59);
        map.put("谷天洛", 82);
        map.put("渣渣辉", 98);
        map.put("蓝小月", 65);
        map.put("皮几万", 70);

        //3.使用刚刚创建的Function对象求学生的平均成绩
        Integer avg = fal2.andThen(fal1).apply(map);
        System.out.println("学生的平均成绩是："+avg);//74

    }
}
